package com.qingyun.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.qingyun.system.common.model.Option;
import com.qingyun.system.model.form.MenuForm;
import com.qingyun.system.model.query.MenuQuery;
import com.qingyun.system.model.vo.MenuVO;
import com.qingyun.system.model.vo.RouteVO;
import com.qingyun.system.model.entity.SysMenu;

import java.util.List;
import java.util.Set;

/**
 * 菜单业务接口
 *
 * @author LY
 */
public interface SysMenuService extends IService<SysMenu> {

    /**
     * 获取路由列表
     *
     * @return 路由列表
     */
    List<RouteVO> listRoutes();

    /**
     * 获取角色权限集合
     *
     * @param roles 权限集合
     * @return 角色权限列表
     */
    Set<String> listRolePerms(Set<String> roles);

    /**
     * 权限分配
     * @return 权限列表
     */
    List<Option> listMenuOptions();

    /**
     * 获取菜单表单
     * @param id 菜单id
     * @return 菜单表单
     */
    MenuForm getMenuForm(Long id);

    /**
     * 获取菜单表格列表
     *
     * @return 菜单表格列表
     */
    List<MenuVO> listMenus(MenuQuery queryParams);

    /**
     * 新增菜单
     *
     * @param menuForm 菜单表单
     * @return true/false
     */
    boolean saveMenu(MenuForm menuForm);

    /**
     * 删除菜单
     * @param id 菜单id
     * @return true/false
     */
    boolean deleteMenu(Long id);
}
